# Task的核心是创建一个初始的Task，然后在不同节点一层一层封装

uint8 FAST_MODE=0
uint8 MEDIUM_MODE=1
uint8 SLOW_MODE=2

uint8 MOW=0     #割草
uint8 P2P=1     #点对点导航
uint8 CHARGE=2  #回桩充电



uint8 IDLE=0    #非执行状态
uint8 STARTING=1    #正在计算中
uint8 EXECUTING=2   #执行中
uint8 TERMINATED=3  #用户取消
uint8 ABORTED=4     #任务因异常自动取消
uint8 FINISHED=5    #任务正常结束

# 第一层封装-基础信息（来源于用户请求或数据库加载）
string name
uint8 type  #任务类型（P2P，充电，割草...）
string create_time  #任务创建时间
string start_time   #当前开始执行时间
geometry_msgs/Pose start_point  #起始位置
geometry_msgs/Pose end_point  #结束位置
geometry_msgs/Polygon area #任务执行区域
geometry_msgs/Polygon working_area #应该开启外设的区域，如果这个区域在地图上定义了，就为空
uint8 mode      #割草模式(快，中，慢)

#第二层封装-计算路径，开始执行
geometry_msgs/PoseArray path    #割草路径
robot_msgs/Hardware start_hardware_state    #开始时硬件状态

#第三层封装-任务执行过程
float32 percentage  #完成百分比
uint8 task_state    #任务状态

#第四层封装-任务结束状态
float32 cleared_area    #完成实际面积
geometry_msgs/Pose final_point  #任务完成后机器人所在位置
string finished_time  #任务完成时间
string time_cost     #任务消耗时间
robot_msgs/Hardware end_hardware_state    #结束时硬件状态（可以计算电量消耗）